package utils;

import java.sql.*;
import java.util.Objects;

/**
 * 数据库工具类
 * 注意:一般情况下封装的工具类中都是一些常量和静态方法
 */
public class DBUtils {
    //声明连接数据库必须的字符串常量
    public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://127.0.0.1:3306/servlet?useSSL=false";
    public static final String USER = "root";
    public static final String PASSWORD = "111111";

    //静态块 static
    // 静态块 与 游离块 的区别
    static {
        try {
            //加载驱动,只需要在第一次连接数据库之前加载一次即可
            Class.forName(DRIVER_CLASS);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    //获取连接
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 关闭资源
     * @param rs ResultSet 结果集
     * @param stat Statement对象
     * @param conn Connection对象
     */
    public static void close(ResultSet rs, Statement stat,Connection conn) {
        //选中,按Ctrl + Alt + t
        try {
            if (rs != null) {
                rs.close();
            }
            if (stat != null) {
                stat.close();
            }
            if (Objects.nonNull(conn)) {
                conn.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}
